#ifndef LIST_H__
#define LIST_H__

typedef int Datatype;
/*@list_st 定义结构体类型
 *@Head_st 定义头结点
 *@node_number 记录链表结点个数
 *@first 第一个结点
 *@last 最后一个结点
 * */


typedef struct list_st
{
	Datatype data;
	struct list_st *next;
}list_st;

typedef struct Head_st
{
	struct list_st *first;
	struct list_st *last;
	int node_number;
}Head_st;

//重定义一个函数类型作为插入方式的接口
typedef int way(Head_st **,list_st *);

//头结点创建
int list_create_head(Head_st **);
//新结点创建,选择插入方式
int list_create(Head_st **,way );

//三种插入方式
int list_insert_head(Head_st **,list_st *);
int list_insert_end(Head_st **,list_st *);
int list_insert_order(Head_st **,list_st*);

//打印链表
int list_display(Head_st *);

//查找结点
list_st *list_find(Head_st *,Datatype);

//删除结点
int list_delete(Head_st *,Datatype);

//销毁链表
int list_destroy(Head_st **);



#endif
